// splitslug.txt
// By Lazarus
// Exactly like basicnpc, except that when creature dies it spawns 2 larva slugs.
// Uses npc exp system as well.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1 - How much to increase flag by.
//   Cell 2 - If add half an exp, then set this to 5.
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short mx,my,i,target;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead
if(char_ok(4) == 1)
{
	if(get_memory_cell(2) == 5)
		inc_flag(250,5,(get_ran(1,get_memory_cell(1),get_memory_cell(1) + 1)));
	if(Get_memory_cell(2) != 5)
		inc_flag(250,5,get_memory_cell(1));
}	
	

	mx = my_loc_x();
	my = my_loc_y();
		if(get_flag(6,9) == 0)
		{	message_dialog("You deliver the killing blow to this massive slug. You don't pay it any more heed, until you notice that small larva are burrowing out of its flesh. It looks like you aren't quite done yet.","");
			set_flag(6,9,1); }	
		place_monster(mx,my,171,1);
		place_monster((mx+(get_ran(1,-1,1))),(my+(get_ran(1,-1,1))),171,1);
break;

beginstate START_STATE; 
	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking
	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3));
break;